home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / asm / e820.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  2KB  |  66 lines

  1. #ifndef _ASM_X86_E820_H
  2. #define _ASM_X86_E820_H
  3. #define E820MAP    0x2d0        /* our map */
  4. #define E820MAX    128        /* number of entries in E820MAP */
  5.  
  6. /*
  7.  * Legacy E820 BIOS limits us to 128 (E820MAX) nodes due to the
  8.  * constrained space in the zeropage.  If we have more nodes than
  9.  * that, and if we've booted off EFI firmware, then the EFI tables
  10.  * passed us from the EFI firmware can list more nodes.  Size our
  11.  * internal memory map tables to have room for these additional
  12.  * nodes, based on up to three entries per node for which the
  13.  * kernel was built: MAX_NUMNODES == (1 << CONFIG_NODES_SHIFT),
  14.  * plus E820MAX, allowing space for the possible duplicate E820
  15.  * entries that might need room in the same arrays, prior to the
  16.  * call to sanitize_e820_map() to remove duplicates.  The allowance
  17.  * of three memory map entries per node is "enough" entries for
  18.  * the initial hardware platform motivating this mechanism to make
  19.  * use of additional EFI map entries.  Future platforms may want
  20.  * to allow more than three entries per node or otherwise refine
  21.  * this size.
  22.  */
  23.  
  24. /*
  25.  * Odd: 'make headers_check' complains about numa.h if I try
  26.  * to collapse the next two #ifdef lines to a single line:
  27.  *    #if defined(__KERNEL__) && defined(CONFIG_EFI)
  28.  */
  29. #define E820_X_MAX E820MAX
  30.  
  31. #define E820NR    0x1e8        /* # entries in E820MAP */
  32.  
  33. #define E820_RAM    1
  34. #define E820_RESERVED    2
  35. #define E820_ACPI    3
  36. #define E820_NVS    4
  37. #define E820_UNUSABLE    5
  38.  
  39. /* reserved RAM used by kernel itself */
  40. #define E820_RESERVED_KERN        128
  41.  
  42. #ifndef __ASSEMBLY__
  43. #include <linux/types.h>
  44. struct e820entry {
  45.     __u64 addr;    /* start of memory segment */
  46.     __u64 size;    /* size of memory segment */
  47.     __u32 type;    /* type of memory segment */
  48. } __attribute__((packed));
  49.  
  50. struct e820map {
  51.     __u32 nr_map;
  52.     struct e820entry map[E820_X_MAX];
  53. };
  54.  
  55. #endif /* __ASSEMBLY__ */
  56.  
  57. #define ISA_START_ADDRESS    0xa0000
  58. #define ISA_END_ADDRESS        0x100000
  59. #define is_ISA_range(s, e) ((s) >= ISA_START_ADDRESS && (e) < ISA_END_ADDRESS)
  60.  
  61. #define BIOS_BEGIN        0x000a0000
  62. #define BIOS_END        0x00100000
  63.  
  64.  
  65. #endif /* _ASM_X86_E820_H */
  66.